<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>设计模式-模板方法模式</title>
</head>
<body>
    <script>
        class TelevisionModule {
            // 模板方法: 规定子类的这种行为必须遵守模板的定义
            init() {
                // 主板通电
                this.bodyStart()
                // 音响通电
                this.audioStart()
                // 显示屏亮起
                this.screenStart()
            }
        }

        // 小米电视
        class MiTelevision extends TelevisionModule {
            bodyStart() {
                console.log('小米电视 - bodyStart');
            }
            audioStart() {
                console.log('小米电视 - audioStart');
            }
            advertisementStart() {
                console.log('小米电视 - advertisementStart');
            }
            screenStart() {
                this.advertisementStart()
                console.log('小米电视 - screenStart');
            }
        }
        // 西门子电视
        class SiemensTelevision extends TelevisionModule {
            bodyStart() {
                console.log('西门子电视 - bodyStart');
            }
            audioStart() {
                console.log('西门子电视 - audioStart');
            }
            screenStart() {
                console.log('西门子电视 - screenStart');
            }
        }

        let mi = new MiTelevision()
        mi.init()

        let s = new SiemensTelevision
        s.init()



    </script>
</body>
</html>